package cn.biplam.front.template.base;

import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.base.HtmlWindow;
import cn.biplam.front.template.Template;

/**
 * 文件下载模板<BR>
 * 原理：由Anchor和IFrame组成(显示隐藏).	IFrame中提供Form和InputFile,由外部命令操作浏览文件和上传.
 * 
 * @author 	WangSong 2009-6-9 下午08:29:41
 * @version 1.0
 */
public class FileDownLoad implements Template{

	/** 文件ID*/
	private String sFileId;
	/** 按钮名称*/
	private String sLabel;
	/** 主页路径*/
	private String sHomeUrl;
	
	/**
	 * 文件来源类型
	 */
	public enum File_Src{
		/**来自上传文件列表 */
		Upload,
		/**来自下载文件列表 */
		Download;
	}
	
	private File_Src fileSrc=File_Src.Download;

	/**
	 * 构造方法	
	 * @param sFileId		文件ID
	 * @param sLabel		下载按钮说明文字
	 * @param sHomeUrl		主页路径
	 * @throws ErrorMessage
	 */
	public FileDownLoad(String sFileId,String sLabel,String sHomeUrl) throws ErrorMessage{
		this(sFileId,sLabel,sHomeUrl,File_Src.Download);
	}

	/**
	 * 构造方法	
	 * @param sFileId		文件ID
	 * @param sLabel		下载按钮说明文字
	 * @param sHomeUrl		主页路径
	 * @throws ErrorMessage
	 */
	public FileDownLoad(String sFileId,String sLabel,String sHomeUrl,File_Src fileSrc) throws ErrorMessage{
		this.sHomeUrl=sHomeUrl;
		this.sLabel=sLabel;
		this.sFileId=sFileId;
		this.fileSrc = fileSrc;
	}
	
	/**
	 * 功能：返回设置好的HtmlWindow对象
	 * @return
	 * @throws ErrorMessage 
	 */
	public HtmlWindow get() throws ErrorMessage{
		StringBuilder sb = new StringBuilder();
		sb.append("window.open('");
		sb.append(sHomeUrl);
		sb.append("/downLoad?id=");
		sb.append(this.sFileId);
		sb.append("&type=");
		sb.append(fileSrc);
		sb.append("','_blank','height=0,width=0,top=-1,right=-1');");
		Anchor anchor = new Anchor(sb.toString(),this.sLabel);
		return anchor.get();
	}
}
